package com.qing.function;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class PredicateService {

    /**
     * 将List类型抽象化
     * 现在你可以把filter方法用在香蕉、橘子、Integer或是String的列表上了
     * @param list
     * @param p  断定型接口
     * @param <T>
     * @return
     */
    public static  <T> List<T> filter(List<T> list, Predicate<T> p){
        List<T> result=new ArrayList<>();
        for (T t : list) {
            if(p.test(t)){  //p谓词 封装测试苹果的条件
                result.add(t);
            }
        }
        return  result;
    };

    public static void main(String[] args) {
        //List类型抽象化，可以直接作为工具使用
        List<Integer> appleList=filter(Arrays.asList(123,45,67,89,23,689,90),item -> item>100);
        System.out.println(appleList);
    }
}
